home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-09-21 | 18.7 KB | 546 lines | [TEXT/ttxt] |
- WHAT CHANGED IN SYMANTEC C++/THINK C 6.0.1
- ===========================================
- Copyright © 1993 Symantec Corporation. All Rights Reserved.
- September 21, 1993
- Font: Geneva 12
-
- Introduction
- ===========
- This file describes the changes made to the components of THINK C/Symantec C++ for Macintosh 6.0.1. It is divided into the following sections:
-
- THINK Project Manager
- General
- Browser
- SourceServer
- Scripting
- THINK Debugger
- Symantec C++ translator
- THINK C translator
- THINK Rez translator
- Headers/Libraries
- General
- Apple #includes
- THINK #includes
- Rez #includes
- Mac Libraries
- Standard Libraries
-
- THINK Project Manager
- ====================
- General
- -------
- • Compile, Precompile, Check Syntax, Preprocess, Disassemble and Make
- progress dialogs are now movable modal dialogs.
-
- • The system font is no longer changed to 12 point by the THINK Project
- Manager.
-
- • In the Standard file dialog for “Open…”, if no file is selected, hitting
- return is disabled.
-
- • In the Search results window, the left and right arrow keys are disabled.
-
- • “Print Project” now truncates full pathnames when printing, so they won’t
- overwrite other information.
-
- • Attempting to compile or open a file with no associated translator will
- now generate an error message.
-
- • Marking the THINK C translator as not preload will no longer cause an
- address error on 68000 machines.
-
- • The THINK Project Manager will display the project directory in the standard
- file dialog when the Project Manager is opened by double-clicking on a project
- or via the “Switch to Project” menu item. Extensions which modify the standard
- file dialog box (such as Directory Assistance II) may interfere with this behavior.
-
- • The THINK Project Manager now handles aliases to files somewhat
- differently:
-
- Aliases to files can appear anywhere except the project or THINK Project
- Manager “Aliases” folder. Those folders are for aliases to folders only.
-
- The project stores references to the aliases, not to the resolved file. For
- example, suppose a source file #includes "alias.h", which refers to the file
- "real.h". The project remembers the file as "alias.h". Opening the file via
- the pop-up includes menu or Open Selection command will bring up the file
- "real.h" in a window titled "alias.h".
-
- • Long filenames in the Make dialog no longer overlap the scroll bar.
-
- • XSYM files now have the same name as their owning source file — the .XSYM
- extension is no longer added. The project manager is backward compatible
- with the old naming convention. When searching for an XSYM file, if the
- search for the new style name fails, then the project manager searches for
- the old name. If that is found, the .XSYM extension is removed. A fix was
- also made for temporary XSYMs which have a .TEMP extension. If the
- temporary name exceeds 31 characters, a temporary name of the form
- “XSYM_<random number>” is synthesized.
-
- • Option-double-clicking on a name in the editor will now search for mangled
- names if a simple search for the name fails.
-
- • Batch search no longer fails when it progresses past the 99th file.
-
- • Previously, an application being run under the debugger had a process
- signature of 'KAHL'. The application now has its true process signature.
-
- • Printing a newly created project no longer displays garbage values for code,
- data, and jump table size.
-
- • The cancel button in the “Set Tabs & Fonts…” dialog responds correctly to
- mouse-clicks and key presses.
-
- Browser
- -------
- • Selecting an operator method in the Browser now finds the method
- declaration. The operator method will be found even if the operator is an
- inline.
-
- • The Browser now works for templates.
-
- • The Browser now works on 68000 machines.
-
- SourceServer
- ------------
- • The Newer button in the SourceServer CheckOut dialog now works as
- follows:
-
- If a directory is chosen in the “Checkout to:” pop-up, those files are
- selected whose newest (non-branch) revision is not already in the directory,
- except for any revision which is on a branch. The assumption is that if
- you have checked out a branch, you intend to keep it.
-
- Conversely, holding down the Option key while clicking on the “Newer” button
- selects only revisions of those files if a copy of those files already
- resides in the directory. This is equivalent to using the Checkout
- command with the -update option. The sense is: Select file revisions for
- checkout by the same criterion as “Newer” but do not checkout revisions of
- any files that have not already been checked out to this directory — just
- update the files that are already checked out.
-
- If the “Default Directories” menu item is chosen in the “Checkout to” pop-up,
- the behavior is similar except that it is performed for the entire TPM
- project, not just one directory. If the option key is held down, files
- which cannot be found by the TPM will not be selected. Files which are not
- part of the TPM project will not be selected.
-
- • Files in the SourceServer CheckIn dialog now have icons indicating their
- status.
-
- • Double-clicking on a file in the SourceServer CheckIn dialog now does
- nothing. This prevents accidental check-ins when what you are really trying
- to do is look at a list of revisions.
-
- • Checking out an old version of a file from SourceServer no longer gives a
- spurious error.
-
- • If there is diagnostic as well as regular output as the result of a
- command performed via the SourceServer command line, both will be output.
-
- • Operations performed on files using MPW projector (or any other
- application which modifies a file’s 'ckid' resource) will now be reflected in
- the THINK Project Manager editor when it is brought to the foreground.
-
- • The “Checkout/CheckIn file” menu item (first in the SourceServer menu) is
- no longer enabled when SourceServer is not running.
-
- • The THINK Project Manager no longer crashes when you try to check in a
- file which has been marked ‘modify read-only’.
-
- • The behavior of the “Default Directories” menu item of the “Checkout to”
- menu in the SourceServer checkout dialog has been modified. It now works as
- follows:
-
- Files will be checked out to the location in which they were last found.
- A file residing in the project or system tree may be moved around within its
- tree — the file will be found and checked out to the correct place. If a
- file cannot be found in the tree in which it was last found, it will be
- checked out to the top level directory of the project tree. An alert is
- posted to warn the user of this. (i.e. “Some files were checked out to the
- directory <project directory>”).
-
- • SourceServer operations will no longer time-out. Command-period will
- cancel any SourceServer operation in progress. (NOTE: SourceServer itself
- will finish the command it is currently executing in the background. This
- means that any command event sent to SourceServer from the THINK Project
- Manager must wait for the first one to complete.
-
- • The scroll bars now work in the list of revisions in the SourceServer
- Checkout dialog.
-
- • Quotes used within the task and comment fields of any of the SourceServer
- dialogs (Checkout, Checkout file, CheckIn, CheckIn file, New Project) are
- now handled correctly.
-
- • Only one file at a time can be selected from the revision view of the file
- list in the SourceServer checkout dialog.
-
- • The THINK Project Manager no longer erroneously reports that a project has
- been unmounted or no longer exists when in fact this is not the case.
-
- • The “Checkout to” pop-up in the SourceServer CheckOut dialog now works
- when checking out an older version of a file.
-
- • The list of files in the CheckIn dialog now shows all files in the
- project, including all headers and non-text files.
-
- • Choosing the “Source”, “Modified”, “All”, “Headers” or “None” buttons in
- the CheckIn dialog no longer causes a crash when there are no files in the
- project.
-
- • A problem in which comments displayed in the checkout window were
- truncated has been fixed. Comments are still limited in length to 255
- characters.
-
- • A problem in which files checked in or out with no comment or task or
- projects created with no comment would thereafter display '' in the task and
- comment fields has been fixed.
-
- • Files checked in or out with empty comment or task fields — or projects
- created with no comment — used to display " in the task and comment fields.
- This has been fixed.
-
- • The CheckOut dialog previously defaulted to “Modifiable”. It now defaults to
- “Read-only”.
-
- • Canceling the checkout of a branched file no longer fails.
-
- Scripting
- --------
- • It is now possible to avoid user confirmation when sending a Run or Quit
- event. You must provide “saving yes” or “saving no” to avoid user
- interaction. The following are example AppleScripts:
-
- tell application "THINK Project Manager"
- Run updating yes saving yes
- end tell
-
- tell application "THINK Project Manager"
- Quit saving yes
- end tell
-
- • The Run event now defaults to the project settings if a parameter is
- missing. For example if the debugging parameter is missing, it will default
- to the project setting, rather than FALSE.
-
- • The property “full path name” has been added to the AppleScript types
- ‘project document’ and ‘source’ which returns the full path name of the
- specified object, searching for it if it’s not where it was last seen, or
- raise error fnfErr. For example:
-
- tell application "THINK Project Manager"
- set foo to the full path name of the source "temp.cp" in ¬
- the first project document
- end tell
-
- • A list of include files referenced by a particular project can now be
- obtained using the following script.
-
- tell application "THINK Project Manager"
- set proj a reference to project document 1
- copy include files of proj to theIncludes
- end tell
-
- • The 'aete' resource now reflects the actual classes and events supported
- by the THINK Project Manager. The 'aete' resource is used by Apple Script
- to display the THINK Project Manager’s dictionary.
-
- THINK Debugger
- ==============
- • The debugger will no longer crash when debugging AOCE applications that use
- Standard Directory.
-
- • A memory leak associated with stepping through header files has been fixed.
-
- • A problem with displaying variables of type unsigned char as unsigned
- decimal has been fixed.
-
- Symantec C++ translator
- ======================
- •••••••••
- IMPORTANT
- •••••••••
-
- All precompiled headers must be re-precompiled to use the new translator.
- In addition, object layout has changed, so be sure to recompile all C++ object
- code from scratch.
-
- Overall, these areas of the compiler were addressed:
-
- - error reporting and handling
- - template generation
- - multiple inheritance
-
- • new_by_name() now works correctly on 68000 Macs, and cleans up the
- stack correctly.
-
- • Members of multiply-inherited classes now appear correctly in debugger
- struct window.
-
- • Calling ldiv() no longer corrupts the stack.
-
- • Data window expressions no longer get truncated if they contain errors.
-
- • Aggregate results whose size is 4 bytes or less are now returned
- correctly from routines that use C++ calling conventions. (They are now
- passed in register D0.)
-
- • Aggregate results for C++ routines that have more than one argument
- work correctly now.
-
- • 10 byte double results for C routines are now returned correctly.
-
- • Data window expressions no longer produce internal errors.
-
- • #pragma once now works like THINK C with respect to case-sensitive
- file name matching.
-
- • Doubles that are part of a const struct pointer or reference are now
- passed correctly.
-
- • Compatibility issues with 68000 Macs and PowerBook 100 Macs have
- been fixed.
-
- • C++ comments that contain single or double quotes following
- preprocessor directives with “ANSI conformance” on now work correctly.
-
- • Template functions may be declared static or inline.
-
- • The error handling has been improved when encountering erroneous template
- declarations.
-
- • The built-in name “comp” is not recognized when strict ANSI conformance
- is on.
-
- • Conditional expressions with enum (or smaller-than-int) arguments are
- not promoted to int.
-
- • asm() is now allowed when ANSI relaxed is used.
-
- • Many bugs with multiple inheritance have been fixed, especially those
- involving virtual base and non-virtual base hierarchies.
-
- • The bug with operator overloading and forward declared types has been fixed.
-
- • Error handling is more robust.
-
- • Spurious “code segment too large” error in switch statement code generation
- has been fixed.
-
- • The code generation bug with conditional operators has been fixed.
-
- • C calling conventions for functions that return structs now work.
-
- • Template bug with inappropriate “member functions cannot be static” error
- fixed.
-
- • Member functions no longer hide base class functions of the same name for
- PascalObject derived classes.
-
- • Overloaded operator[]() now works correctly with respect to non-int
- arguments.
-
- • There is now better error reporting for errors that occur during template expansion.
-
- • Multiple-inheritance code generation has been improved.
-
- • Friend declaration of a function previously declared as static no longer
- changes the function’s linkage.
-
- • The bug in transcendental MC68881 code generation was fixed.
-
- • Empty non-virtual destructors that are generated out of line no longer
- produce incorrect code.
-
- • Floating point struct member passed as argument to routine with pascal
- calling conventions no longer produces incorrect code.
-
- • The compiler now flags overloaded PascalObject member functions as errors.
-
- • The code generation bug with pointer and bitwise & was fixed.
-
- • Decrement operator applied to HandleObject class member no longer
- modifies “this” pointer.
-
- • Initializing an array of pointers to functions with fixed array bounds
- no longer produces an internal error.
-
- • Internal error when compiling an expression with a conditional operator
- no longer occurs.
-
- • The compiler now allows destructors to be called with C calling conventions
- (via the __cdecl directive).
-
- • Arithmetic expressions involving non-int sized enums work.
- In some cases this bug caused an internal error, in CDorth.c, line 211.
-
- • Header files work better in the debugger.
- Stepping into or setting breakpoints in a header file will no longer cause
- the “flashing source” problem.
-
- • Syntax error in enum no longer causes crash.
-
- • Access denied error message with templates now has correct unmangled
- names.
-
- • Internal error in mangle.c when compiling function with comp argument
- no longer occurs.
-
- • Displaying static variables in dataview window now works.
-
- • Compiler produces a warning when a class’ key function is later declared
- inline.
-
- • Specifying the size of an initialized aggregate that has an initializer
- that contains expressions of non-basic types no longer causes an internal
- error.
-
- • You can now specify nested types in a C++ style cast.
-
- • Syntax errors during template expansion will no longer cause crashes.
-
- • The compiler no longer generates MacsBug names when no link
- instruction is generated.
-
- • The size of PascalObject objects as placed in class info proc is now
- correct for model far objects.
-
- • The memory leaks have been fixed.
-
- • Fixed numerous internal errors:
- CGcs.c, line 227
- init.c, line 983
- CGcntrl.c, line 400
- mangle.c, line 484
- cpp.c, line 4234
- CGreslt.c, line 41
- CGcod.c, line 316
- CGfunc.c, line 702
-
- THINK C translator
- =================
- • The THINK_C macro now expands to “6”, not “5”.
-
- • The compiler now recognizes complex re-used array type names in method
- parameter lists.
-
- THINK Rez translator
- ===================
- • THINK Rez no longer crashes when a type mismatch occurs in an enumeration
- constant.
-
- • In certain cases it was possible for an undefined constant to cause a
- crash. This has been fixed.
-
- • Putting a numeric literal in a resource statement where a string was
- expected caused a bus error. It no longer does.
-
- • In some cases lower case hex constants were not recognized correctly. Now
- they are.
-
- • The compiler now signals an error when the specified size of a string type
- is out of range for that type.
-
- • The INCLUDE … AS … function did not set the new resource type correctly.
- Now it does.
-
- • $$Format now works exactly like the standard library function sprintf
- (with the Rez restriction on the number of arguments).
-
- • $$Time, $$Date, $$Version didn’t work. Now they do.
-
- • $$Day, $$Month, $$Year, $$Hour, $$Minute, $$Second, $$Month, $$Weekday didn’t
- return correct values. Now they do.
-
- • String literals are truncated correctly.
-
- • THINK Rez will accept size qualifying suffixes (L,U,UL,LU and whatever case
- combinations you please) on numeric hex literals. These have no meaning.
-
- • Overflows of numeric constants are flagged by the compiler. Note that it is
- impossible to detect long integer overflows.
-
- • String literals containing less than four characters are handled correctly.
-
- HEADERS/LIBRARIES
- ==================
- General
- -------
- • Mac #includes.c was updated to contain the new headers (see below) and a new
- MacHeaders was built.
-
- Apple #includes
- --------------
- • The lower-case toolbox routines are now conditionalized out of the following:
-
- Controls.h
- Desk.h
- Dialogs.h
- DiskInit.h
- Files.h
- Fonts.h
- Lists.h
- Menus.h
- OSUtils.h
- Packages.h
- QuickDraw.h
- Resources.h
- SegLoad.h
- StandardFile.h
- TextEdit.h
- ToolUtils.h
- Windows.h
-
- • AppleEvents.h was updated from the MPW 3.3 released headers.
-
- • The following headers from MPW 3.3 were added:
-
- ActionAtomIntf.h
- AEObjects.h
- AEPackObject.h
- AERegistry.h
- ImageCodec.h
- ImageCompression.h
- MediaHandlers.h
- Movies.h
- MoviesFormat.h
- QuickTimeComponents.h
-
- • A C++ style comment was removed from QDOffScreen.h
-
- • Types.h was modified so that extended80 == extended == long double when
- compiling SANE native floating point.
-
- THINK #includes
- --------------
- • A circular dependency between BDC.h and Packages.h was fixed.
-
- Rez #includes
- ------------
- • The following include from MPW 3.3 were added:
-
- AERegistry.r
- ImageCodec.r
-
- Mac Libraries
- ------------
- • These libraries were rebuilt to fix the smart linking bug introduced in 6.0.
-
- • Two new libraries were added: OSL and QuickTime. OSL contains Apple’s
- Object Support Library, and QuickTime contains QuickTime related functions.
-
- Standard Libraries
- -----------------
- • printf and scanf (and related functions) would crash when ANSI/ANSI++ was
- built with both 68881 code generation and 4-byte ints. This has been fixed.
-
- • Code that called _exiting() without first installing any termination functions
- (whether implicitly or explicitly) caused a bus error. This has been fixed.
-
- • size_t.h lacked a final carriage return which would cause an error when
- compiling with strict ANSI conformance. This has been fixed.
-
- • When copying inverse text from a console window the high bits of the
- characters were not cleared correctly. This has been fixed.
-